/*! 
 *  PointBody represents a physical entity with a mass.
 *  It is a point entity, if you need to manage orientation or angular momentum you should use RigidBody.
 *  -
 *  Implementation of a simple physics engine, Physics Programming course
 *  Master in Computer Game Developement, Verona, Italy
 *  -
 *  \author Andrea Casaccia
 *  \date 06 October 2012
 */

#pragma once

#include "PhysicsBody.h"

namespace Pheng
{
	class PointBody : public PhysicsBody {

	public:
		//! Updates internal state advancing time by dt seconds
		//! \param iDt simulation step in seconds
		//! \return void
		void update( const float iDt );

		//! Applies a force for the duration of current simulation step on the center of mass of this body
		//! \param iForce a vector representing the force to be applied
		void applyForce( const float* iForce );

	private:
		float mLinearMomentum[3];
		float mInverseMass;
		float mPosition[3];
		float mVelocity[3];
		float mNetForce[3];

	};
}